#ifndef LILY_TASK
#define LILY_TASK

#ifdef __cplusplus
extern "C" {
#endif
#include<stdint.h>

	typedef int32_t(*Tasks_def)();
	typedef int32_t(*TasksArg_def)(void*);//add a Task with a parameter
	typedef int32_t(*Arg_Tasks_def)(int32_t argc, char* argv[]);

	extern volatile uint32_t front, rear;
#ifndef Tasks_LEN
#define Tasks_LEN 32
#endif

	extern Tasks_def tasks_[Tasks_LEN];
	extern uint32_t hasTask_;

	void addTask_(Tasks_def task);
	void endTask_(Tasks_def task);
	uint32_t hadTask_(Tasks_def task);
	void endTaskAt_(char index);

	void run_tasks(void);

	void addTaskArg(TasksArg_def f, void* arg);


#ifdef __cplusplus
}
#endif

#endif // LILY_TASK
